From 472f5e4b13254d70752707b482ced662789472be Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 15 Jan 2018 22:52:00 -0500 Subject: [PATCH] treeview: Stop using ::button-press-event We can just use a gesture here. --- gtk/gtktreeview.c | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index 65e47cfb72..d829f0c9c7 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -811,8 +811,10 @@ static void gtk_tree_view_search_activate (GtkEntry *entry static gboolean gtk_tree_view_real_search_enable_popdown(gpointer data); static void gtk_tree_view_search_enable_popdown (GtkWidget *widget, gpointer data); -static gboolean gtk_tree_view_search_button_press_event (GtkWidget *widget, - GdkEventButton *event, +static void gtk_tree_view_search_pressed_cb (GtkGesture *gesture, + int n_press, + double x, + double y, GtkTreeView *tree_view); static void gtk_tree_view_search_scroll_event (GtkWidget *entry, gdouble dx, @@ -10651,6 +10653,7 @@ gtk_tree_view_ensure_interactive_directory (GtkTreeView *tree_view) GtkWidget *frame, *vbox, *toplevel; GdkDisplay *display; GtkEventController *controller; + GtkGesture *gesture; if (tree_view->priv->search_custom_entry_set) return; @@ -10688,9 +10691,12 @@ gtk_tree_view_ensure_interactive_directory (GtkTreeView *tree_view) g_signal_connect (tree_view->priv->search_window, "key-press-event", G_CALLBACK (gtk_tree_view_search_key_press_event), tree_view); - g_signal_connect (tree_view->priv->search_window, "button-press-event", - G_CALLBACK (gtk_tree_view_search_button_press_event), - tree_view); + gesture = gtk_gesture_multi_press_new (tree_view->priv->search_window); + g_object_set_data_full (G_OBJECT (tree_view->priv->search_window), "gesture", + gesture, g_object_unref); + g_signal_connect (gesture, "pressed", + G_CALLBACK (gtk_tree_view_search_pressed_cb), tree_view); + controller = gtk_event_controller_scroll_new (tree_view->priv->search_window, GTK_EVENT_CONTROLLER_SCROLL_VERTICAL); g_object_set_data_full (G_OBJECT (tree_view->priv->search_window), "scroll", @@ -14436,19 +14442,23 @@ gtk_tree_view_search_enable_popdown (GtkWidget *widget, g_source_set_name_by_id (id, "[gtk+] gtk_tree_view_real_search_enable_popdown"); } -static gboolean -gtk_tree_view_search_button_press_event (GtkWidget *widget, - GdkEventButton *event, - GtkTreeView *tree_view) +static void +gtk_tree_view_search_pressed_cb (GtkGesture *gesture, + int n_press, + double x, + double y, + GtkTreeView *tree_view) { GdkDevice *keyb_device; + GdkEventSequence *sequence; + const GdkEvent *event; + GtkWidget *widget; - g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE); - - keyb_device = gdk_device_get_associated_device (gdk_event_get_device ((GdkEvent *) event)); + sequence = gtk_gesture_get_last_updated_sequence (gesture); + event = gtk_gesture_get_last_event (gesture, sequence); + keyb_device = gdk_device_get_associated_device (gdk_event_get_device (event)); + widget = gtk_event_controller_get_widget (GTK_EVENT_CONTROLLER (gesture)); gtk_tree_view_search_window_hide (widget, tree_view, keyb_device); - - return TRUE; } static void -- 2.30.2